A file server is a computer that provides file service relating to the organization of information on storage devices, such as disks. The file server or filer includes a storage operating system that implements a file system to logically organize the information as a hierarchical structure of directories and files on the disks. Each “on-disk” file may be implemented as a set of data structures, e.g., disk blocks, configured to store information. A directory, conversely, may be implemented as a specially formatted file in which information about other files and directories are stored.
A filer may be further configured to operate according to a client/server model of information delivery to thereby allow many clients to access files stored on a server. In this model, the client may comprise an application, such as a database application, executing on a computer that connects to the filer over a computer network. This computer network could be a point to point link, a shared local area network (LAN), a wide area network (WAN) or a virtual private network (VPN) implemented over a public network such as the Internet. Each client may request the services of the file system on the filer by issuing file system protocol messages (typically in the form of packets) to the filer over the network.
The disk storage typically implemented has one or more storage “volumes” comprised of a cluster of physical storage disks, defining an overall logical arrangement of storage space. Currently available filer implementations can serve a large number of is discrete volumes (150 or more, for example). Each volume is generally associated with its own file system. The disks within a volume/file system are typically organized as one or more groups of Redundant Array of Independent (or Inexpensive) Disks (RAID). RAID implementations enhance the reliability and integrity of data storage through the redundant writing of data stripes across a given number of physical disks in the RAID group, and the appropriate caching of parity information with respect to the striped data. In the example of a known file system and process, a RAID 4 implementation is advantageously employed. This implementation specifically entails the striping of data across a group of disks, and separate parity caching within a selected disk of the RAID 4 group.
Each filer “owns” the disks that comprise the volumes that the filer services. This ownership means that the filer is responsible for servicing the data contained on the disks. If the disks are connected to a switching network, for example, a Fibre Channel switch, all of the filers connected to the switch are typically able to see, and read from, all of the disks connected to the switching network. However, only the filer that owns the disks can write to the disks. In effect, there is a “hard” partition between disks that are owned by separate filers that prevents a non-owner from writing to a disk.
This ownership information is stored in two locations. In the example of a known file system, each disk has a predetermined sector named sector S that contains the definitive ownership information. In one embodiment, sector S is sector zero of the disk. The second source of this ownership information is through the use of Small Computer System Interface (SCSI) level 3 reservations. These SCSI-3 reservations are described in SCSI Primary Commands-3, by T10 of the National Committee for Information Technology Standards, which is incorporated fully herein by reference. This method for implementing disk ownership is described in commonly owned U.S. patent application Ser. No. 10/027,457 by Sue Coatney, et al., which is hereby incorporated by reference.
The combination of sector S and SCSI-3 reservation ownership information is often shown in the following format <SECTORS, SCSI>, where SECTORS denotes the ownership information stored in sector S and SCSI is the current holder of the SCSI-3 reservation on that disk. Thus, as an example, if sector S and the SCSI-3 reservation of a disk both show that the disk is owned by a filer, arbitrarily termed “Green,” that disks' ownership information could be denoted <G,G>, where “G” denotes green. If one of the ownership attributes shows that the disk is unowned, a U is (arbitrarily) used, i.e. <G,U>for a disk whose SCSI-3 reservations do not show any ownership.
Many networked storage systems include a plurality of disks that are not currently being utilized by any filer in a volume. For example, if these non-utilized disks are designated as “spare” disks that can be allocated by any filer in the event of a disk failure in a volume, a new volume is to be created, or an existing volume is to be expanded. In prior storage system implementations, each filer had its own group of spare disks attached directly to each filer. This resulted in a noted disadvantage in that spares were only available on a filer by filer basis. If a disk failed, the filer would choose a spare disk available to the filer to replace the failed disk. This case would arise where a particular filer would run out of spare disks, but other filers in the system still have excess spare disks.
Accordingly, it is an object of the present invention to provide a system and method for allocating spare disks in a network storage system such that multiple filers can access spares across various switches and switching networks. The system and method should work to select the “best” spare disk according one or more rules and a set of policies that can be prioritized by desirability according to the user.